//: C12:Simpcopy.cpp
// From Thinking in C++, 2nd Edition
// Available at http://www.BruceEckel.com
// (c) Bruce Eckel 1999
// Copyright notice in Copyright.txt
// Simple operator=()
#include <iostream>
using namespace std;

class Value
{
    int a, b;
    float c;
public:
    Value(int aa = 0, int bb = 0, float cc = 0.0) {
        a = aa;
        b = bb;
        c = cc;
    }
    Value& operator=(const Value& rv) {
        a = rv.a;
        b = rv.b;
        c = rv.c;
        return *this;
    }
    friend ostream&
    operator<<(ostream& os, const Value& rv) {
        return os << "a = " << rv.a << ", b = "
               << rv.b << ", c = " << rv.c;
    }
};

int main()
{
    Value A, B(1, 2, 3.3);
    cout << "A: " << A << endl;
    cout << "B: " << B << endl;
    A = B;
    cout << "A after assignment: " << A << endl;
} ///:~
